package com.sdhs.analyze.common;

public class BizConstants {

    /**
     * 系统类型 运行监测系统
     */
    public static int SYSTEM_TYPE_MONITOR = 1;

    /**
     * 系统类型 部中心系统
     */
    public static int SYSTEM_TYPE_MINISTRY = 2;

    /**
     * 系统类型 省中心系统
     */
    public static int SYSTEM_TYPE_PROVINCE = 3;

    /**
     * 数据类型 交易数据
     */
    public static int DATA_TYPE_TRADE = 1;

    /**
     * 数据类型 牌识数据
     */
    public static int DATA_TYPE_VEH = 2;

    /**
     * ETC门架系统
     */
    public static String NODE_TYPE_ETC_GANTRY_SYSTEM = "1";

    /**
     * 前端系统
     */
    public static String NODE_TYPE_FRONT_SYSTEM = "2";

    /**
     * 设备类型 前端工控机
     */
    public static String NODE_TYPE_FRONT_SERVER = "3";
    /**
     * 软件运行状态
     */
    public static String NODE_TYPE_FRONT_SOFT_STATUS = "3.1";
    /**
     * 硬件资源平均负载
     */
    public static String NODE_TYPE_FRONT_LOAD_AVG = "3.2";
    /**
     * 积压通行流水
     */
    public static String NODE_TYPE_FRONT_OVER_TRADE = "3.3";
    /**
     * 传输异常通行流水
     */
    public static String NODE_TYPE_FRONT_TRANS_ERR_TRADE = "3.4";
    /**
     * 积压牌识流水
     */
    public static String NODE_TYPE_FRONT_OVER_VEH_DATA = "3.5";
    /**
     * 传输异常牌识流水
     */
    public static String NODE_TYPE_FRONT_TRANS_ERR_VEH_DATA = "3.6";
    /**
     * 数据盘使用量
     */
    public static String NODE_TYPE_FRONT_DISK_DATA = "3.7";
    /**
     * 运行盘使用量
     */
    public static String NODE_TYPE_FRONT_DISK_RUN = "3.8";
    /**
     * CPU使用量
     */
    public static String NODE_TYPE_FRONT_CPU_RATE = "3.9";
    /**
     * 物理内存使用量
     */
    public static String NODE_TYPE_FRONT_MEMORY_RATE = "3.10";
    /**
     * 北斗授时状态
     */
    public static String NODE_TYPE_FRONT_BEIDOU_STATUS = "3.11";
    /**
     * 前端工控机心跳传输状态
     */
    public static String NODE_TYPE_FRONT_HEART_BEAT = "3.12";
    /**
     * 前端工控机心跳数据异常状态
     */
    public static String NODE_TYPE_FRONT_HEART_BEAT_VALID_STATUS = "3.13";
    /**
     * 前端工控机网络状态
     */
    public static String NODE_TYPE_FRONT_NETWORK_STATUS = "3.20";

    /**
     * 设备类型 后台服务器
     */
    public static String NODE_TYPE_BACK_SERVER = "4";
    /**
     * 后台服务器软件运行状态
     */
    public static String NODE_TYPE_BACK_SOFT_STATUS = "4.1";
    /**
     * 后台服务器硬件资源平均负载
     */
    public static String NODE_TYPE_BACK_LOAD_AVG = "4.2";
    /**
     * 后台服务器积压通行流水
     */
    public static String NODE_TYPE_BACK_OVER_TRADE = "4.3";
    /**
     * 后台服务器传输异常通行流水
     */
    public static String NODE_TYPE_BACK_TRANS_ERR_TRADE = "4.4";
    /**
     * 后台服务器积压牌识流水
     */
    public static String NODE_TYPE_BACK_OVER_VEH_DATA = "4.5";
    /**
     * 后台传输异常牌识流水
     */
    public static String NODE_TYPE_BACK_TRANS_ERR_VEH_DATA = "4.6";
    /**
     * 后台积压牌识图片
     */
    public static String NODE_TYPE_BACK_OVER_VEH_PIC = "4.7";
    /**
     * 传输异常牌识图片量
     */
    public static String NODE_TYPE_BACK_TRANS_ERR_VEH_PIC = "4.8";
    /**
     * 后台服务器数据盘使用量
     */
    public static String NODE_TYPE_BACK_DISK_DATA = "4.9";
    /**
     * 后台服务器运行盘使用量
     */
    public static String NODE_TYPE_BACK_DISK_RUN = "4.10";
    /**
     * 后台服务器CPU使用量
     */
    public static String NODE_TYPE_BACK_CPU_RATE = "4.11";
    /**
     * 后台服务器物理内存使用量
     */
    public static String NODE_TYPE_BACK_MEMORY_RATE = "4.12";
    /**
     * 后台服务器北斗授时状态
     */
    public static String NODE_TYPE_BACK_BEIDOU_STATUS = "4.13";
    /**
     * 后台服务器网络状态
     */
    public static String NODE_TYPE_BACK_NETWORK_STATUS = "4.20";

    /**
     * 车检器
     */
    public static String NODE_TYPE_VEHICLE_DETECTOR_STATUS = "5";

    /**
     * 其他设备
     */
    public static String NODE_TYPE_OTHER_DEVICE = "6";
    /**
     * 气象监测检设备
     */
    public static String NODE_TYPE_OTHER_WEATHER_DETECTOR = "6.1";
    /**
     * 车型检测设备无响应
     */
    public static String NODE_TYPE_OTHER_CLASS_DETECTOR = "6.2";
    /**
     * 载重检测设备
     */
    public static String NODE_TYPE_OTHER_LOAD_DETECTOR = "6.3";
    /**
     * 温控设备
     */
    public static String NODE_TYPE_OTHER_TEMP_CONTROLLER = "6.4";
    /**
     * 供电设备
     */
    public static String NODE_TYPE_OTHER_POWER_CONTROLLER = "6.5";

    /**
     * 设备类型 牌识
     */
    public static String NODE_TYPE_CAMERA = "7";
    /**
     * 牌识设备连接状态
     */
    public static String NODE_TYPE_CAMERA_CONNECT_STATUS = "7.1";
    /**
     * 牌识设备工作状态
     */
    public static String NODE_TYPE_CAMERA_WORK_STATUS = "7.2";
    /**
     * 补光灯工作状态
     */
    public static String NODE_TYPE_CAMERA_LIGHT_WORK_STATUS = "7.3";
    /**
     * 牌识设备网络连接状态
     */
    public static String NODE_TYPE_CAMERA_NETWORK_STATUS = "7.20";
    /**
     * PSAM 状态
     */
    public static String NODE_TYPE_RSU_PSAM_STATUS = "9";
    /**
     * 设备类型 RSU
     */
    public static String NODE_TYPE_RSU = "8";
    /**
     * 路侧单元主状态
     */
    public static String NODE_TYPE_RSU_STATUS = "8.1";
    /**
     * RSU PSAM卡状态
     */
    public static String NODE_TYPE_RSU_PSAM_CARD_STATUS = "8.2";
    /**
     * RSU控制板温度
     */
    public static String NODE_TYPE_RSU_TEMP = "8.3";
    /**
     * RSU主备控制器之间的网络连接状态
     */
    public static String NODE_TYPE_RSU_CONTROLLER_NETWORK = "8.4";
    /**
     * 天线控制器网络状态
     */
    public static String NODE_TYPE_RSU_NETWORK_STATUS = "8.20";

    /**
     * 设备类型 天线头
     */
    public static String NODE_TYPE_ANTENNA = "10";
    /**
     * 天线头温度
     */
    public static String NODE_TYPE_RSU_ANTENNA_TEMP = "10.1";
    /**
     * 天线头通信状态
     */
    public static String NODE_TYPE_RSU_ANTENNA_COMM_STATUS = "10.2";
    /**
     * 天线头发射状态
     */
    public static String NODE_TYPE_RSU_ANTENNA_EMISSION_STATUS = "10.3";
    /**
     * 天线头接收状态
     */
    public static String NODE_TYPE_RSU_ANTENNA_RECEIVE_STATUS = "10.4";

    /**
     * 机柜
     */
    public static String NODE_TYPE_CABINET = "11";
    /**
     * 机柜
     */
    public static String NODE_TYPE_CABINET_NETWORK = "11.1";

    /**
     * 动环
     */
    public static String NODE_TYPE_ENVIRONMENT = "12";
    /**
     * 动环 供电模式
     */
    public static String NODE_TYPE_ENVIRONMENT_POWER = "12.1";
    /**
     * 动环 蓄电池电量
     */
    public static String NODE_TYPE_ENVIRONMENT_BATTERY_LEVEL = "12.2";
    /**
     * 动环 电压
     */
    public static String NODE_TYPE_ENVIRONMENT_VOLTAGE = "12.3";
    /**
     * 动环 电流
     */
    public static String NODE_TYPE_ENVIRONMENT_ELECTRIC_CURRENT = "12.4";
    /**
     * 动环 温度
     */
    public static String NODE_TYPE_ENVIRONMENT_TEMP = "12.5";
    /**
     * 动环 湿度
     */
    public static String NODE_TYPE_ENVIRONMENT_HUMIDITY = "12.6";
    /**
     * 动环 烟雾
     */
    public static String NODE_TYPE_ENVIRONMENT_SMOG = "12.7";
    /**
     * 动环 水浸
     */
    public static String NODE_TYPE_ENVIRONMENT_WATER = "12.8";
    /**
     * 动环 空调
     */
    public static String NODE_TYPE_ENVIRONMENT_AIR = "12.9";

    /**
     * 节点类型 网络
     */
    public static String NODE_TYPE_NETWORK = "20";

    /**
     * 节点类型 网络 运行监测
     */
    public static String NODE_TYPE_NETWORK_MONITOR = "20.1";

    /**
     * 节点类型 网络 部中心
     */
    public static String NODE_TYPE_NETWORK_MINISTRY = "20.2";

    /**
     * 节点类型 网络 省中心
     */
    public static String NODE_TYPE_NETWORK_PROVINCE = "20.3";

    /**
     * 节点类型 交易数据传输
     */
    public static String NODE_TYPE_TRADEDATATRANSFER = "21";

    /**
     * 节点类型 牌识数据传输
     */
    public static String NODE_TYPE_VEHDATATRANSFER = "22";

    /**
     * 节点类型 交易数据传输中断状态 运行监测
     */
    public static String NODE_TYPE_DATATRANSFER_TRADE_BROKEN_MONITOR = "21.1";

    /**
     * 节点类型 交易数据传输中断状态 部中心
     */
    public static String NODE_TYPE_DATATRANSFER_TRADE_BROKEN_MINISTRY = "21.2";

    /**
     * 节点类型 交易数据传输中断状态 省中心
     */
    public static String NODE_TYPE_DATATRANSFER_TRADE_BROKEN_PROVINCE = "21.3";

    /**
     * 节点类型 交易数据传输延迟状态 运行监测
     */
    public static String NODE_TYPE_DATATRANSFER_TRADE_DELAY_MONITOR = "21.4";

    /**
     * 节点类型 交易数据传输延迟状态 部中心
     */
    public static String NODE_TYPE_DATATRANSFER_TRADE_DELAY_MINISTRY = "21.5";

    /**
     * 节点类型 交易数据传输延迟状态 省中心
     */
    public static String NODE_TYPE_DATATRANSFER_TRADE_DELAY_PROVINCE = "21.6";

    /**
     * 节点类型 牌识数据传输中断状态 运行监测
     */
    public static String NODE_TYPE_DATATRANSFER_VEH_BROKEN_MONITOR = "22.1";

    /**
     * 节点类型 牌识数据传输中断状态 部中心
     */
    public static String NODE_TYPE_DATATRANSFER_VEH_BROKEN_MINISTRY = "22.2";

    /**
     * 节点类型 牌识数据传输中断状态 省中心
     */
    public static String NODE_TYPE_DATATRANSFER_VEH_BROKEN_PROVINCE = "22.3";

    /**
     * 节点类型 牌识数据传输延迟状态 运行监测
     */
    public static String NODE_TYPE_DATATRANSFER_VEH_DELAY_MONITOR = "22.4";

    /**
     * 节点类型 牌识数据传输延迟状态 部中心
     */
    public static String NODE_TYPE_DATATRANSFER_VEH_DELAY_MINISTRY = "22.5";

    /**
     * 节点类型 牌识数据传输延迟状态 省中心
     */
    public static String NODE_TYPE_DATATRANSFER_VEH_DELAY_PROVINCE = "22.6";

    /**
     * 节点类型 关键指标
     */
    public static String NODE_TYPE_INDEX = "23";

    /**
     * 节点类型 关键指标 ETC交易成功率
     */
    public static String NODE_TYPE_INDEX_ETC_SUCCESSRATE = "23.1";

    /**
     * 节点类型 关键指标 CPC交易成功率
     */
    public static String NODE_TYPE_INDEX_CPC_SUCCESSRATE = "23.2";

    /**
     * 节点类型 关键指标 车牌匹配率
     */
    public static String NODE_TYPE_INDEX_VEHMATCH_SUCCESSRATE = "23.3";

    /**
     * 车型编码
     */
    public static final int [] VC_CODE = {
            1, 2, 3, 4,
            11, 12, 13, 14, 15, 16,
            21, 22, 23, 24, 25, 26
    };

    /**
     * 车型名称
     */
    public static final String [] VC_CODE_NAME = {
            "客一", "客二", "客三", "客四",
            "货一", "货二", "货三", "货四", "货五", "货六",
            "专一", "专二", "专三", "专四", "专五", "专六"
    };

    /**
     * 通行介质类型：OBU（单片式/双片式）
     */
    public static final int MEDIA_TYPE_OBU = 1;

    /**
     * 通行介质类型：CPC卡
     */
    public static final int MEDIA_TYPE_CPC = 2;

    /**
     * OBU类型：单片式OBU
     */
    public static final int OBU_SIGN_SINGLE = 1;

    /**
     * OBU类型：双片式OBU
     */
    public static final int OBU_SIGN_DOUBLE = 2;

    /**
     * 机构类型：门架
     */
    public static final int ORG_TYPE_GANTRY = 1;

    /**
     * 机构类型：门架后台
     */
    public static final int ORG_TYPE_GANTRY_BACK = 2;

    /**
     * 机构类型：门架前端
     */
    public static final int ORG_TYPE_GANTRY_FRONT = 3;

    /**
     * 机构类型：分中心
     */
    public static final int ORG_TYPE_SUBCENTER = 21;

    /**
     * 机构类型：路段
     */
    public static final int ORG_TYPE_ROAD = 22;

    /**
     * 机构类型：运营管理单位
     */
    public static final int ORG_TYPE_OWNER = 23;

    /**
     * 机构类型：集团
     */
    public static final int ORG_TYPE_GROUP = 0;

    /**
     * 节点状态：不检查
     */
    public static final int NODE_STATUS_UNCHECKED = -99;

    /**
     * 节点状态：未知
     */
    public static final int NODE_STATUS_UNKNOWN = -2;

    /**
     * 节点状态：正常
     */
    public static final int NODE_STATUS_NORMAL = 0;

    /**
     * 节点状态：低异常等级
     */
    public static final int NODE_STATUS_LOW_EXCEPTION = 1;

    /**
     * 节点状态：高异常等级
     */
    public static final int NODE_STATUS_HIGH_EXCEPTION = 2;

    /**
     * Redis Key 前缀：机构树
     */
    public static final String REDIS_KEY_PRE_ORG_INFO_TREE = "org_info_tree:";

    /**
     * Redis Key 前缀：管辖门架机构列表
     */
    public static final String REDIS_KEY_PRE_BELONG_GANTRY_ORG_INFO_LIST = "belong_gantry_org_info_list:";

    /**
     * Redis Key 前缀：管辖下级机构列表
     */
    public static final String REDIS_KEY_PRE_BELONG_ORG_INFO_LIST = "belong_org_info_list:";

    /**
     * Redis Key 前缀：门架系统机构Map
     */
    public static final String REDIS_KEY_PRE_GANTRY_SYSTEM_ORG_INFO_MAP = "gantry_system_org_info_map:";

    /**
     * Redis Key 前缀：门架系统机构Map
     */
    public static final String REDIS_KEY_PRE_GANTRY_SYSTEM_ORG_INFO_MAP_NEW = "gantry_system_org_info_map_new:";

    /**
     * Redis Key 前缀：机构信息
     */
    public static final String REDIS_KEY_PRE_ORG_INFO = "org_info:";

    /**
     * Redis Key 前缀：门架RSU交易成功率
     */
    public static final String REDIS_KEY_PRE_GANTRY_RSU_SUCCESS_RATE = "gantry_success_rate_rsu:";

    /**
     * Redis Key 前缀：门架车牌识别成功率
     */
    public static final String REDIS_KEY_PRE_GANTRY_CAMERA_SUCCESS_RATE = "gantry_success_rate_camera:";

    /**
     * Redis Key 前缀：门架RSU交易成功率
     */
    public static final String REDIS_KEY_PRE_GANTRY_RSU_HOUR_SUCCESS_RATE = "gantry_hour_success_rate_rsu:";

    /**
     * Redis Key 前缀：门架牌识匹配率
     */
    public static final String REDIS_KEY_PRE_GANTRY_CAMERA_HOUR_SUCCESS_RATE = "gantry_hour_success_rate_camera:";

    /**
     * Redis Key 前缀：近24小时门架RSU交易成功率
     */
    public static final String REDIS_KEY_PRE_GANTRY_RSU_HOUR_SUM_SUCCESS_RATE = "gantry_hour_sum_success_rate_rsu:";

    /**
     * Redis Key 前缀：近24小时门架牌识匹配率
     */
    public static final String REDIS_KEY_PRE_GANTRY_CAMERA_HOUR_SUM_SUCCESS_RATE = "gantry_hour_sum_success_rate_camera:";

    /**
     * Redis Key 前缀：数据传输情况 rsu
     */
    public static final String REDIS_KEY_PRE_GANTRY_DATA_TRANS_INFO_RSU = "gantry_data_trans_info_rsu:";

    /**
     * Redis Key 前缀：数据传输情况 camera
     */
    public static final String REDIS_KEY_PRE_GANTRY_DATA_TRANS_INFO_CAMERA = "gantry_data_trans_info_camera:";

    /**
     * Redis Key 前缀：交易日汇总
     */
    public static final String REDIS_KEY_PRE_GANTRY_SUM_TRADE_DAY = "gantry_sum_trade_day:";

    /**
     * Redis Key 前缀：交易小时汇总
     */
    public static final String REDIS_KEY_PRE_GANTRY_SUM_TRADE_HOUR_RSU = "gantry_sum_trade_hour_rsu:";

    /**
     * Redis Key 前缀：交易小时汇总
     */
    public static final String REDIS_KEY_PRE_GANTRY_SUM_TRADE_HOUR_CAMERA = "gantry_sum_trade_hour_camera:";

    /**
     * Redis Key 前缀：数据传输分钟汇总 rsu
     */
    public static final String REDIS_KEY_PRE_GANTRY_SUM_DATA_MINUTE_RSU = "gantry_sum_data_minute_rsu:";

    /**
     * Redis Key 前缀：数据传输分钟汇总 camera
     */
    public static final String REDIS_KEY_PRE_GANTRY_SUM_DATA_MINUTE_CAMERA = "gantry_sum_data_minute_camera:";

    /**
     * Redis Key 前缀：车流量排名
     */
    public static final String REDIS_KEY_PRE_GANTRY_TRAFFIC_DAY_RANK = "gantry_traffic_day_rank:";

    /**
     * Redis Key 前缀：异常事件
     */
    public static final String REDIS_KEY_PRE_ORG_EXCEPTION_MESSAGE = "org_exception_message:";

    /**
     * Redis Key 前缀：系统正常率
     */
    public static final String REDIS_KEY_PRE_ORG_STAT_INFO_LIST = "org_stat_info_list:";

    /**
     * Redis Key 前缀：机构状态
     */
    public static final String REDIS_KEY_PRE_ORG_STATUS_MAP = "org_status_map:";

    /**
     * Redis Key 前缀：设备异常率
     */
    public static final String REDIS_KEY_PRE_GANTRY_DEVICE_EXCEPTION_RATE_LIST = "device_exception_rate_list:";

    /**
     * Redis Key 前缀：所有机构信息
     */
    public static final String REDIS_KEY_PRE_ALL_ORG_INFO = "all_org_info:";

    /**
     * Redis Key 前缀：任务发布者
     */
    public static final String REDIS_KEY_PRE_TASK_PUBLISHER = "task_publisher:";

    /**
     * Redis Key 前缀：门架状态信息
     */
    public static final String REDIS_KEY_PRE_GANTRY_MONITOR_INFO = "gantry_monitor_info:";

    /**
     * Redis Key 前缀：网络监测
     */
    public static final String REDIS_KEY_PRE_GANTRY_NETWORK = "gantry_network:";

    /**
     * 未知状态值
     */
    public static final int UNKNOWN_VALUE = -999;

    /**
     * 状态区间 -2
     */
    public static final int STATUS_RANGE_UNKNOWN = -2;

    /**
     * 状态区间 1
     */
    public static final int STATUS_RANGE_1 = 1;

    /**
     * 状态区间 2
     */
    public static final int STATUS_RANGE_2 = 2;

    /**
     * 状态区间 3
     */
    public static final int STATUS_RANGE_3 = 3;

    /**
     * 根据机构类型获取下一级机构类型
     * @param orgType
     * @return
     */
    public static int getNextOrgType(int orgType) {
        int nextOrgType = orgType;
        switch (orgType) {
            case BizConstants.ORG_TYPE_GANTRY:
            case BizConstants.ORG_TYPE_GANTRY_BACK:
                nextOrgType = BizConstants.ORG_TYPE_GANTRY_FRONT;
                break;
            case BizConstants.ORG_TYPE_SUBCENTER:
                nextOrgType = BizConstants.ORG_TYPE_GANTRY;
                break;
            case BizConstants.ORG_TYPE_ROAD:
                nextOrgType = BizConstants.ORG_TYPE_SUBCENTER;
                break;
            case BizConstants.ORG_TYPE_OWNER:
                nextOrgType = BizConstants.ORG_TYPE_ROAD;
                break;
            case BizConstants.ORG_TYPE_GROUP:
                nextOrgType = BizConstants.ORG_TYPE_OWNER;
                break;
            default:
                break;
        }
        return nextOrgType;
    }
}
